Synchronous distributed groupware applications have proliferated in the technology, particularly with the increased popularity of the World Wide Web. Loosely integrated groupware applications, such as chat boards, allow effectively simultaneous access at a single group “location,” via browsers, to a host of remotely-located users. And with the addition of user programmability at the remote locations, the groupware applications can be extended to allow collaborative efforts which can range from collaborative input to a single version of a form to group navigation tools.
From the end user's perspective, the collaborative applications must be highly responsive, providing graphical user interface (GUI) responses at the initiating site as if only a single user were operating with the application, and providing updates at the remote sites with minimal response latency. In addition, the collaborative applications must provide awareness of ongoing collaborations and operations within the applications to all users.
Due to the wide variety of applications to be supported, it is desirable to provide a general application development framework. From the programming perspective, the development framework must be independent of the application and high level, capable of expressing a wide variety of collaborative applications. In addition, it is preferable that the developer not be required to be aware of distributed communication protocols, thread synchronization, contention, and other details of concurrent distributed programming.
Currently available object-based, GUI-oriented systems make use of the so-called Model View Controller (MVC) development scheme. Using MVC, applications can attach views to model objects, with controllers being used to update the state of the model objects. Typically, controllers receive input from GUI components and, in response, invoke operations to read or write the state of the model objects. The views are automatically notified when model objects are updated.
It is desirable to extend the MVC development scheme to development of collaborative applications having standard, generic model objects, with provision to the user of a responsive model object-based system capable of guaranteed atomicity on updates to model objects replicated at remote locations, and featuring dynamic establishment of collaborations between local model objects and those at remote applications.